Google 又搞事情了:该网页检测到 Root 被拒绝访问!
对玩机爱好者来说,「该 APP 检测到 Root 并停止运行」 是一件非常让人恼火的事,自 Android 系统诞生以来,Root 玩家与 APP 厂商的对抗从来就没有停止过;从早期的 RootCloak 到 MagiskHide 再到 KernelSU,这场庄家与玩家的猫鼠游戏已经持续了接近十年。
然而,随着 Key Attestation 和基于 TEE 的 StrongBox Keymaster 的出现以及 Google 大力推广的 SafeNet Attestation / Play Integrity API 服务,在可以预见的未来,留给玩家的腾挪空间越来越少了。
本以为这场游戏就要到此为止,没想到 Google 得寸进尺,它还打算把 App 中的这一套组合拳带入到浏览器!
Web 环境完整性检测
最近,Google 的四个工程师提出了一项名为“Web 环境完整性 API (Web Environment Integrity API,以下简称 WEI API)”的提案,通过这个 API,网站的服务器能够评估客户端设备的真实性和完整性。这里有几点注意:
1. 是服务器评估而非客户端!这是此种方式有别于传统的环境检测的关键,如果检测代码运行在客户端(通常是 JavaScript),那么这将很轻易地被篡改进而被绕过(常见的猴油脚本就是这个原理);但它是由服务端评估的,修改客户端代码无能为力,除非你能入侵对方服务器!
2. 设备的真实性和完整性是你自己评估的;比如说,你可以认为解锁或者 Root 的设备不完整,你也认为某个杂牌机型号不真实,甚至你还可以认为浏览器装了某个插件不可信,是否完整取决于你的评判标准而非某个固定的 true / false!
可能有童鞋还不明白这意味着什么,我打个比方:现在有很多银行和游戏类 App 在检测到你设备有 Root 或者仅仅只是解锁的状态后,会直接拒绝运行;不过目前各种网站对此毫无办法,因为网页是运行在浏览器沙盒中的,它对设备中的环境信息基本无法感知,更别谈 Root 了。但是,设想一下,在有了“WEI API” 以后,当你用你 Root 过的手机随便打开一个网站,一个 403 页面弹出来:Forbidden: 该网页检测到 Root 被拒绝访问!
可能的影响
设备完整性 API 在 iOS 和 Android 中已经存在挺久了,它们分别是 Apple 的 App Attest 和 Google 的 Play Integrity API,事实上此提案的作者也说灵感来自于此。我们能够感受到,现在的 Android 系统越来越封闭(iOS 就不提了),好不容易解锁 Root 还被各种 App 围追堵截;然而这种情况在几年前完全是另外一副光景,那时候,还有手机是为发烧而生的。如果 WEI API 这个提案实装,未来的 Web 会是什么样?
这是将来可能会发生的一些情形:
1. 设备 Root 后无法访问某些网站。Root 的玩家进一步减少,当然相应地,各种刷量机器人和作弊行为也会减少。
2. 广告拦截变得不可能。一旦你安装广告拦截插件,网站将直接拒绝提供服务;要么看广告,要么滚!
3. 如果越来越多的服务器认为只有 Chrome/Edge/Safari 可信,其它小众浏览器将死亡;如果服务器认为只有 Android/iOS/macOS/Windows 可信,那么其他操作系统将死亡...
有人说,“The open Internet is officially dead as soon as this is commonly implemented”,“开放互联网将死”,这也许有些过度悲观,但在逆全球化的今天,这似乎并不奇怪。
然而,不可否认的是,WEI 将大大提升 Web 的安全性,因为它会让各种作弊和欺诈行为的难度指数级提升。就像今天的 Android 系统,虽然玩机用户的体验越来远差,但普通用户的体验相比以前是有大幅提升的。
后记
当前 WEI API 还只是一个提案,目前还在设计阶段,并没有实装。不过它在互联网上引发了广泛的争论,很多有影响力的工程师表示反对;有人表示,如果 Google 把这个提案加入 Chromium,它将立即切换到 Safari。不过我认为,如果 WEI 实装,Apple 将其加入 WebKit 只是时间问题。
大家晚安!
推荐阅读
欢迎关注我的公众号“虚拟框架”,原创技术文章第一时间推送。